package maitreEsclavexN;

import java.net.InetAddress;
import java.rmi.*;
import java.rmi.registry.LocateRegistry;

public class ProgEsclave {
    public static void main(String[] argv) {
    	// arg0 le port du maitre
    	// arg1 le port des esclaves
    	// arg2 le nom du maitre
    	
    	// on suppose que InetAddress.getLocalHost().getHostName() 
    	//renvoie truite si je suis sur la machine truite
	try {
		Calcule calculateur = new Calcule(argv[2],argv[0]);
		new Thread(calculateur).start();
		LocateRegistry.createRegistry(Integer.parseInt(argv[1]));
	    Naming.rebind("rmi://localhost:"+argv[1]+"/Service",calculateur);
	   boolean trouve = false;
	   while(!trouve){
		   try{
			   Thread.sleep(50);
		   AgregationInterface somme = 
				(AgregationInterface) Naming.lookup("rmi://"+argv[2]+":"+argv[0]+"/Service");
				somme.ajouteEsclave(InetAddress.getLocalHost().getHostName());//ici
		   trouve=true;
		   
		   }
		   catch(Exception e){
			   System.out.println("une exception");
			   
		   }
		   }
		
			  
	    System.out.println("Slave is ready.");
	    
	} catch(Exception e) {
	    System.out.println("Slave failed: "+e);
	}
    }
}
